﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Collections;
using Proxy;
using System.Web.Services;
using System.Text;
using SIM.Util;

namespace SIM.Geo.UI.Geo
{
    public partial class frmMuestraEspecial : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                this.rgLista.ClientSettings.Scrolling.ScrollHeight = int.Parse(System.Configuration.ConfigurationManager.AppSettings["listaPrincipalScrollHeight"]);
                this.txtFechaInicio.SelectedDate = DateTime.Now.AddMonths(-1);
                this.txtFechaFinal.SelectedDate = DateTime.Now.AddMonths(1);
                CargarCombos();
                Listar();
            }
            if (this.hidCodigoLabor.Value.CompareTo(this.hidDato.Value) != 0)
            {
                this.hidCodigoLabor.Value = this.hidDato.Value;
                Listar();
                CargarLabor();
            }

            this.txtCodigo.Attributes.Add("onkeypress", "return solonumerosypunto(event);");
            this.txtCodigo.Attributes.Add("onBlur", "return FormatearCodigo();");
        }


        #region Metodos

        protected override void Listar()
        {
            //string varIni = this.txtFechaInicio.SelectedDate.ToString();
            //string varFin = this.txtFechaFinal.SelectedDate.ToString();

            try
            {
                using (var proxy = new SEMuestraEspecialClient("BasicHttpBinding_ISEMuestraEspecial"))
                {

                    var lista = proxy.BuscarMuestraEspecialPorcodigo(this.txtFechaInicio.SelectedDate.Value, this.txtFechaFinal.SelectedDate.Value, int.Parse(this.ddlCategoriaMuestraBuscar.SelectedValue), 0);
                    this.rgLista.DataSource = lista;

                    this.rgLista.DataBind();
                }

            }
            catch (Exception ex)
            {

                Logger.Error("frmMuestraEspecial:Listar", ex);
            }
        }

        private void CargarCombos()
        {
            try
            {

                //this.txtAnio.Text = DateTime.Today.Year.ToString();
                //busqueda
                using (SECategoriaMuestraEspecialClient proxy = new SECategoriaMuestraEspecialClient("BasicHttpBinding_ISECategoriaMuestraEspecial"))
                {
                    this.Bind(this.ddlCategoriaMuestraBuscar, proxy.ObtenerListItem().ToList());
                    this.ddlCategoriaMuestraBuscar.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.TODOS, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
                }

                //Combos 
                using (SEGeologoClient proxy = new SEGeologoClient("BasicHttpBinding_ISEGeologo"))
                {
                    this.Bind(this.ddlGeologo, proxy.ObtenerListItem().ToList());
                    this.ddlGeologo.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
                }
                using (SETomadorMuestraClient proxy = new SETomadorMuestraClient("BasicHttpBinding_ISETomadorMuestra"))
                {
                    this.Bind(this.ddlTomadorMuestra, proxy.ObtenerListItem().ToList());
                    this.ddlTomadorMuestra.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
                }
                using (SETipoControlCalidadClient proxy = new SETipoControlCalidadClient("BasicHttpBinding_ISETipoControlCalidad"))
                {
                    this.Bind(this.ddlTipoControlCalidad, proxy.ObtenerListItem().ToList());
                    this.ddlTipoControlCalidad.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
                }

                using (SETipoMaterialMuestraClient proxy = new SETipoMaterialMuestraClient("BasicHttpBinding_ISETipoMaterialMuestra"))
                {
                    this.Bind(this.ddlTipoMaterial, proxy.ObtenerListItem().ToList());
                    this.ddlTipoMaterial.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
                }
                using (SETipoCanchaClient proxy = new SETipoCanchaClient("BasicHttpBinding_ISETipoCancha"))
                {
                    this.Bind(this.ddlCancha, proxy.ObtenerListItem().ToList());
                    this.ddlCancha.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
                }

            }
            catch (Exception ex)
            {

                Logger.Error("frmMuestraEspecial:CargarCombos", ex);
            }
        }

        private void MostraTituloPopup(int codigoCategoriaMuestraEspecial)
        {
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Cancha.GetHashCode())
            {
                lblTitleModal.Text = "Muestra Cancha";
            }
            else if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Especial.GetHashCode())
            {
                lblTitleModal.Text = "Muestra Especial";
            }
            else if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Humedades.GetHashCode())
            {
                lblTitleModal.Text = "Muestra Humedades";
            }
            else if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Planta.GetHashCode())
            {
                lblTitleModal.Text = "Muestra Planta";
            }
        }
        private void MostrarDetalle(string codigoMuestraEspecial, enmAccionRealizar accionRealizar)
        {
            try
            {

                if (accionRealizar == enmAccionRealizar.Edicion)
                {
                    //Carga detalla de pantalla en modo Edicion                    
                    this.CargarDatos(codigoMuestraEspecial);

                    OcultarMensajeValidacion();
                    OcultarMensaje();
                    //Limpiar(int.Parse(hidCodigoCategoria.Value));
                    using (SECategoriaMuestraEspecialClient categoriaProxy = new SECategoriaMuestraEspecialClient("BasicHttpBinding_ISECategoriaMuestraEspecial"))
                    {
                        var categoria = categoriaProxy.ObtenerCategoriaMuestraEspecial(int.Parse(hidCodigoCategoria.Value));
                        hidCodigoCategoriaMuestraEspecial.Value = categoria.CodigoCategoriaMuestraEspecial.ToString();
                        txtCategoriaMuestraespecial.Text = categoria.Descripcion;
                        txtCategoriaMuestraespecial.Enabled = false;
                    }
                    txtCodigo.Enabled = false;
                    Habilitar(true, int.Parse(hidCodigoCategoria.Value));

                    MostraTituloPopup(int.Parse(hidCodigoCategoria.Value));
                    HabilitarXCategoria(int.Parse(hidCodigoCategoria.Value));
                    ddlMuestraDuplicada.Visible = false;
                    lblMuestraDuplicado.Visible = false;
                    ddlMuestraDuplicada.Enabled = false;
                    lblMuestraDuplicado.Enabled = false;

                    this.ibtnObtener.Visible = false;

                }
                else if (accionRealizar == enmAccionRealizar.Ver)
                {
                    //Carga detalla de pantalla en modo Consulta
                    CargarDatos(codigoMuestraEspecial);
                    //Limpiar(int.Parse(hidCodigoCategoria.Value));

                    OcultarMensaje();
                    OcultarMensajeValidacion();
                    using (SECategoriaMuestraEspecialClient categoriaProxy = new SECategoriaMuestraEspecialClient("BasicHttpBinding_ISECategoriaMuestraEspecial"))
                    {
                        var categoria = categoriaProxy.ObtenerCategoriaMuestraEspecial(int.Parse(hidCodigoCategoria.Value));
                        hidCodigoCategoriaMuestraEspecial.Value = categoria.CodigoCategoriaMuestraEspecial.ToString();
                        txtCategoriaMuestraespecial.Text = categoria.Descripcion;
                        txtCategoriaMuestraespecial.Enabled = false;
                    }
                    txtCodigo.Enabled = false;

                    Habilitar(false, int.Parse(hidCodigoCategoria.Value));
                    MostraTituloPopup(int.Parse(hidCodigoCategoria.Value));
                    HabilitarXCategoria(int.Parse(hidCodigoCategoria.Value));

                    ddlMuestraDuplicada.Enabled = false;
                    lblMuestraDuplicado.Enabled = false;

                    this.ibtnObtener.Visible = false;

                }

                this.mpRegistro.Show();
                OcultarMensaje();
                hidCodigoCategoria.Value = "0";
            }
            catch (Exception ex)
            {

                Logger.Error("frmGeoMecanica:MostrarDetalle", ex);
            }
        }

        #region Mensajes
        protected override void MostrarMensajeValidacion(string mensaje)
        {
            this.pnlMensajeValidacion.Visible = true;
            this.lblMensajeValidacion.Text = mensaje;
        }

        protected override void OcultarMensajeValidacion()
        {
            this.pnlMensajeValidacion.Visible = false;
            this.lblMensajeValidacion.Text = string.Empty;
        }

        protected override void MostrarMensaje(string mensaje, enmTipoMensajeMostrar tipoMensaje = enmTipoMensajeMostrar.Informativa)
        {
            this.pnlMensaje.Visible = true;
            this.lblMensaje.Text = mensaje;
            this.pnlMensaje.CssClass = this.ObtenerEstiloMensaje(tipoMensaje);
        }

        protected override void OcultarMensaje()
        {
            this.pnlMensaje.Visible = false;
            this.lblMensaje.Text = string.Empty;
        }

        #endregion

        #endregion

        #region Eventos
        protected void ibtnBuscar_Click(object sender, ImageClickEventArgs e)
        {
            Listar();
        }

        protected void rgLista_DeleteCommand(object sender, GridCommandEventArgs e)
        {
            try
            {
                string codigoMuestraEspecial = ((GridDataItem)e.Item).GetDataKeyValue("CodigoMuestraEspecial").ToString();
                using (var proxy = new SEMuestraEspecialClient("BasicHttpBinding_ISEMuestraEspecial"))
                {
                    proxy.EliminarMuestraEspecial(codigoMuestraEspecial);
                }
                this.Listar();
                this.MostrarMensaje(MSG_OK_ELIMINAR);
            }
            catch (Exception ex)
            {
                this.MostrarMensaje(MSG_ERROR_ELIMINAR, enmTipoMensajeMostrar.Error);
                Logger.Error("frmMuestraEspecial:rgLista_DeleteCommand", ex);
            }
        }

        protected void rgLista_PageIndexChanged(object sender, GridPageChangedEventArgs e)
        {
            this.Listar();
        }

        protected void rgLista_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
        {
            this.Listar();
        }

        protected void rgLista_SortCommand(object sender, GridSortCommandEventArgs e)
        {
            this.Listar();
        }

        protected void rgLista_ItemCommand(object sender, GridCommandEventArgs e)
        {
            if (e.CommandName.CompareTo("Editar") == 0)
            {
                var item = (GridEditableItem)e.Item;
                string codigoMuestraEspecial = item.GetDataKeyValue("CodigoMuestraEspecial").ToString();
                MostrarDetalle(codigoMuestraEspecial, enmAccionRealizar.Edicion);
            }

            if (e.CommandName.CompareTo("Ver") == 0)
            {
                ////Ver solo lectura

                var item = (GridEditableItem)e.Item;
                string codigoMuestraEspecial = item.GetDataKeyValue("CodigoMuestraEspecial").ToString();
                MostrarDetalle(codigoMuestraEspecial, enmAccionRealizar.Ver);
            }

            if (e.CommandName == RadGrid.FilterCommandName)
            {
                Listar();
            }
        }

        protected void rgLista_ItemDataBound(object sender, GridItemEventArgs e)
        {
            try
            {
                if (e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem)
                {
                    GridDataItem item = (GridDataItem)e.Item;
                    //if (this.hidEstadoSondaje.Value.CompareTo(enmEstadoSondaje.FINALIZADO.GetHashCode().ToString()) == 0 |
                    //    this.hidCumplimiento.Value.CompareTo(enmEstadoCumplimiento.CUMPLIDO.GetHashCode().ToString()) == 0)
                    //{
                    //    ImageButton btnEliminar = (ImageButton)item["btnEliminar"].Controls[0];
                    //    btnEliminar.ToolTip = BUTTON_TOOLTIP_DESHABILITADO;
                    //    btnEliminar.Enabled = false;

                    //    ImageButton btnEditar = (ImageButton)item["btnEditar"].Controls[0];
                    //    btnEditar.ToolTip = BUTTON_TOOLTIP_DESHABILITADO;
                    //    btnEditar.Enabled = false;
                    //}
                }
            }
            catch (Exception ex)
            {

                Logger.Error("frmAvancePerforacion:rgLista_ItemDataBound", ex);
            }
        }

        protected void ibtnExportar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Listar();
                string alternateText = "ExcelML";
                this.rgLista.ExportSettings.Excel.Format = (GridExcelExportFormat)Enum.Parse(typeof(GridExcelExportFormat), alternateText);
                this.rgLista.ExportSettings.IgnorePaging = true;
                this.rgLista.ExportSettings.ExportOnlyData = true;
                this.rgLista.ExportSettings.OpenInNewWindow = true;
                this.rgLista.MasterTableView.ExportToExcel();
            }
            catch (Exception ex)
            {

                Logger.Error("frmAvancePerforacion:ibtnExportar_Click", ex);
            }
        }

        private void HabilitarXCategoria(int codigoCategoriaMuestraEspecial)
        {
            #region Configurar

            this.ddlGeologo.Visible = true;
            this.ddlTipoMaterial.Visible = true;
            this.ddlTomadorMuestra.Visible = true;
            this.ddlPlataforma.Visible = true;
            this.txtFecha.Visible = true;
            this.rtxtDescripcion.Visible = true;
            this.ddlTipoControlCalidad.Visible = true;
            ddlMuestraDuplicada.Visible = false;
            lblMuestraDuplicado.Visible = false;
            ibtnObtener.Visible = false;
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Cancha.GetHashCode())
            {
                this.lblCancha.Visible = true;
                this.ddlCancha.Visible = true;
                this.lblViajes.Visible = true;
                this.txtViajes.Visible = true;
                this.lblHoraIni.Visible = false;
                this.lblHoraFin.Visible = false;
                this.txtHoraIni.Visible = false;
                this.txtHoraFin.Visible = false;
                this.lblLabor1.Visible = false;
                this.RadAjaxPanel1.Visible = false;
                this.ibtnConsultar.Visible = false;
                this.searchBoxLabor.Visible = false;

                this.ibtnObtener.Visible = true;
            }
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Especial.GetHashCode())
            {
                this.lblViajes.Visible = true;
                this.txtViajes.Visible = true;
                this.lblLabor1.Visible = true;
                this.RadAjaxPanel1.Visible = true;
                this.ibtnConsultar.Visible = true;
                this.searchBoxLabor.Visible = true;
                this.lblLabor.Visible = true; //Agregado por Edgar
                this.lblHoraIni.Visible = false;
                this.lblHoraFin.Visible = false;
                this.txtHoraIni.Visible = false;
                this.txtHoraFin.Visible = false;
                this.lblCancha.Visible = false;
                this.ddlCancha.Visible = false;

                this.ibtnObtener.Visible = true;

            }
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Planta.GetHashCode())
            {

                this.lblHoraIni.Visible = true;
                this.lblHoraFin.Visible = true;
                this.txtHoraIni.Visible = true;
                this.txtHoraFin.Visible = true;
                this.lblLabor1.Visible = false;
                this.ibtnObtener.Visible = true;
                this.RadAjaxPanel1.Visible = false;
                this.ibtnConsultar.Visible = false;
                this.searchBoxLabor.Visible = false;
                this.lblLabor.Visible = false; //Agregado por Edgar
                this.lblCancha.Visible = false;
                this.ddlCancha.Visible = false;
                this.lblViajes.Visible = false;
                this.txtViajes.Visible = false;

            }
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Humedades.GetHashCode())
            {

                this.lblHoraIni.Visible = false;
                this.lblHoraFin.Visible = false;
                this.txtHoraIni.Visible = false;
                this.txtHoraFin.Visible = false;
                this.lblLabor1.Visible = false;
                this.RadAjaxPanel1.Visible = false;
                this.ibtnConsultar.Visible = false;
                this.searchBoxLabor.Visible = false;
                this.lblCancha.Visible = false;
                this.ddlCancha.Visible = false;
                this.lblViajes.Visible = false;
                this.txtViajes.Visible = false;

                this.ibtnObtener.Visible = true;
            }

            #endregion
        }

        #endregion
        #region Registrar_MuestraEspecial
        protected void ibtnRegistrarCancha_Click(object sender, ImageClickEventArgs e)
        {
            using (SEPlataformaClient proxy = new SEPlataformaClient("BasicHttpBinding_ISEPlataforma"))
            {
                this.Bind(this.ddlPlataforma, proxy.ObtenerListItem1(enmCategoriaMuestraEspecial.Cancha.GetHashCode()).ToList());
                this.ddlPlataforma.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
            }
            try
            {
                Limpiar(enmCategoriaMuestraEspecial.Cancha.GetHashCode());
                using (SECategoriaMuestraEspecialClient categoriaProxy = new SECategoriaMuestraEspecialClient("BasicHttpBinding_ISECategoriaMuestraEspecial"))
                {
                    var categoria = categoriaProxy.ObtenerCategoriaMuestraEspecial(enmCategoriaMuestraEspecial.Cancha.GetHashCode());
                    hidCodigoCategoriaMuestraEspecial.Value = categoria.CodigoCategoriaMuestraEspecial.ToString();
                    txtCategoriaMuestraespecial.Text = categoria.Descripcion;
                    txtCategoriaMuestraespecial.Enabled = false;

                }

                txtCodigo.Text = string.Empty;
                txtCodigo.Enabled = true;
                txtFecha.SelectedDate = DateTime.Now.Date;
                Habilitar(true, enmCategoriaMuestraEspecial.Cancha.GetHashCode());
                lblTitleModal.Text = "Muestra Cancha";
                HabilitarXCategoria(enmCategoriaMuestraEspecial.Cancha.GetHashCode());

                this.mpRegistro.Show();
                this.txtCodigo.Focus();

            }
            catch (Exception ex)
            {

                Logger.Error("MuestraEspecial:ibtnRegistrarCancha_Click", ex);
            }
        }
        protected void ibtnRegistrarEspecial_Click(object sender, ImageClickEventArgs e)
        {

            using (SEPlataformaClient proxy = new SEPlataformaClient("BasicHttpBinding_ISEPlataforma"))
            {
                this.Bind(this.ddlPlataforma, proxy.ObtenerListItem1(enmCategoriaMuestraEspecial.Especial.GetHashCode()).ToList());
                this.ddlPlataforma.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
            }
            try
            {
                Limpiar(enmCategoriaMuestraEspecial.Especial.GetHashCode());
                using (SECategoriaMuestraEspecialClient categoriaProxy = new SECategoriaMuestraEspecialClient("BasicHttpBinding_ISECategoriaMuestraEspecial"))
                {
                    var categoria = categoriaProxy.ObtenerCategoriaMuestraEspecial(enmCategoriaMuestraEspecial.Especial.GetHashCode());
                    hidCodigoCategoriaMuestraEspecial.Value = categoria.CodigoCategoriaMuestraEspecial.ToString();
                    txtCategoriaMuestraespecial.Text = categoria.Descripcion;
                    txtCategoriaMuestraespecial.Enabled = false;
                }

                txtCodigo.Text = string.Empty;
                txtCodigo.Enabled = true;
                txtFecha.SelectedDate = DateTime.Now.Date;
                Habilitar(true, enmCategoriaMuestraEspecial.Especial.GetHashCode());
                lblTitleModal.Text = "Muestra Especial";
                HabilitarXCategoria(enmCategoriaMuestraEspecial.Especial.GetHashCode());

                this.mpRegistro.Show();
                this.txtCodigo.Focus();

            }
            catch (Exception ex)
            {

                Logger.Error("MuestraEspecial:ibtnRegistrarEspecial_Click", ex);
            }

        }
        protected void ibtnRegistrarPlanta_Click(object sender, ImageClickEventArgs e)
        {

            using (SEPlataformaClient proxy = new SEPlataformaClient("BasicHttpBinding_ISEPlataforma"))
            {
                this.Bind(this.ddlPlataforma, proxy.ObtenerListItem1(enmCategoriaMuestraEspecial.Planta.GetHashCode()).ToList());
                this.ddlPlataforma.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
            }
            try
            {
                Limpiar(enmCategoriaMuestraEspecial.Planta.GetHashCode());
                using (SECategoriaMuestraEspecialClient categoriaProxy = new SECategoriaMuestraEspecialClient("BasicHttpBinding_ISECategoriaMuestraEspecial"))
                {
                    var categoria = categoriaProxy.ObtenerCategoriaMuestraEspecial(enmCategoriaMuestraEspecial.Planta.GetHashCode());
                    hidCodigoCategoriaMuestraEspecial.Value = categoria.CodigoCategoriaMuestraEspecial.ToString();
                    txtCategoriaMuestraespecial.Text = categoria.Descripcion;
                    txtCategoriaMuestraespecial.Enabled = false;
                }

                txtCodigo.Text = string.Empty;
                txtCodigo.Enabled = true;
                txtFecha.SelectedDate = DateTime.Now.Date;
                Habilitar(true, enmCategoriaMuestraEspecial.Planta.GetHashCode());
                lblTitleModal.Text = "Muestra Planta";
                HabilitarXCategoria(enmCategoriaMuestraEspecial.Planta.GetHashCode());
                ibtnObtener.Visible = true;
                this.mpRegistro.Show();
                this.txtCodigo.Focus();

            }
            catch (Exception ex)
            {

                Logger.Error("MuestraEspecial:ibtnRegistrarPlanta_Click", ex);
            }

        }
        protected void ibtnRegistrarHumedades_Click(object sender, ImageClickEventArgs e)
        {


            using (SEPlataformaClient proxy = new SEPlataformaClient("BasicHttpBinding_ISEPlataforma"))
            {
                this.Bind(this.ddlPlataforma, proxy.ObtenerListItem1(enmCategoriaMuestraEspecial.Humedades.GetHashCode()).ToList());
                this.ddlPlataforma.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));
            }

            try
            {
                Limpiar(enmCategoriaMuestraEspecial.Humedades.GetHashCode());
                using (SECategoriaMuestraEspecialClient categoriaProxy = new SECategoriaMuestraEspecialClient("BasicHttpBinding_ISECategoriaMuestraEspecial"))
                {
                    var categoria = categoriaProxy.ObtenerCategoriaMuestraEspecial(enmCategoriaMuestraEspecial.Humedades.GetHashCode());
                    hidCodigoCategoriaMuestraEspecial.Value = categoria.CodigoCategoriaMuestraEspecial.ToString();
                    txtCategoriaMuestraespecial.Text = categoria.Descripcion;
                    txtCategoriaMuestraespecial.Enabled = false;
                }

                txtCodigo.Text = string.Empty;
                txtCodigo.Enabled = true;
                txtFecha.SelectedDate = DateTime.Now.Date;
                Habilitar(true, enmCategoriaMuestraEspecial.Humedades.GetHashCode());
                lblTitleModal.Text = "Muestra Humedades";
                HabilitarXCategoria(enmCategoriaMuestraEspecial.Humedades.GetHashCode());

                this.mpRegistro.Show();
                this.txtCodigo.Focus();

            }
            catch (Exception ex)
            {

                Logger.Error("MuestraEspecial:ibtnRegistrarHumedades_Click", ex);
            }
        }
        #endregion
        private void CargarLabor()
        {
            try
            {
                this.searchBoxLabor.Text = string.Empty;
                this.lblLabor.Text = string.Empty;
                using (SELaborClient proxyLabor = new SELaborClient("BasicHttpBinding_ISELabor"))
                {
                    var labor = proxyLabor.Obtener(int.Parse(this.hidCodigoLabor.Value.ToString()));
                    if (labor != null)
                    {
                        this.hidCodigoLabor.Value = labor.CodigoLabor.ToString();
                        this.hidDato.Value = labor.CodigoLabor.ToString();
                        this.lblLabor.Text = labor.NombreLabor + " - " + labor.Cuadrante.ToString();
                        this.searchBoxLabor.Text = labor.NombreLabor;
                    }
                }
            }
            catch (Exception ex)
            {

                Logger.Error("frmMuestraEspecial:CargarLabor", ex);
            }

        }
        protected void searchBoxLabor_Search(object sender, SearchBoxEventArgs e)
        {
            try
            {
                this.hidDato.Value = "0";
                this.hidCodigoLabor.Value = "0";
                this.searchBoxLabor.Text = string.Empty;
                this.lblLabor.Text = string.Empty;
                if (e.Value != null)
                {
                    this.hidDato.Value = e.Value;
                    this.hidCodigoLabor.Value = e.Value;
                    CargarLabor();
                }
            }
            catch (Exception ex)
            {

                Logger.Error("frmMuestraEspecial:searchBoxLabor_Search", ex);
            }
        }

        [WebMethod]
        public static List<SearchBoxData> GetResults(SearchBoxContext context)
        {
            List<SearchBoxData> data = null;
            try
            {
                using (SELaborClient proxy = new SELaborClient("BasicHttpBinding_ISELabor"))
                {
                    var lista = proxy.Buscar(context.Text).ToList();
                    data = lista.Select(x => new SearchBoxData { Value = x.CodigoLabor.ToString(), Text = x.NombreLabor }).ToList();
                }


            }
            catch (Exception ex)
            {

                Logger.Error("frmMuestraEspecial:GetResults", ex);
            }
            return data;
        }

        protected void ddlMuestraDuplicada_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (this.ddlMuestraDuplicada.SelectedValue.CompareTo(TipoDropDownList.Seleccionar.GetHashCode().ToString()) != 0)
                {
                    using (var proxy = new SEMuestraEspecialClient("BasicHttpBinding_ISEMuestraEspecial"))
                    {
                        var item = proxy.ObtenerMuestraEspecial(this.ddlMuestraDuplicada.SelectedValue);
                        if (item != null)
                        {
                            this.ddlGeologo.SelectedValue = item.CodigoGeologo.ToString();
                            this.ddlTipoMaterial.SelectedValue = item.CodigoTipoMaterialMuestra.ToString();
                            this.ddlTomadorMuestra.SelectedValue = item.CodigoTomadorMuestra.ToString();
                            this.ddlPlataforma.SelectedValue = item.CodigoPlataforma.ToString();
                            this.txtFecha.SelectedDate = item.Fecha;
                            this.txtViajes.Text = item.NumeroViajes.ToString();

                            this.ddlCancha.SelectedValue = (item.CodigoTipoCancha != null) ? item.CodigoTipoCancha.ToString() : TipoDropDownList.Seleccionar.GetHashCode().ToString();
                            this.txtHoraIni.SelectedTime = item.HoraIni;
                            this.txtHoraFin.SelectedTime = item.HoraFin;
                            this.rtxtDescripcion.Text = item.Observacion.ToString();
                            this.ddlTipoControlCalidad.SelectedValue = item.CodigoTipoControlCalidad.ToString();

                        }
                    }
                }
            }
            catch (Exception ex)
            {

                Logger.Error("MuestraEspecial:ddlMuestraDuplicada_SelectedIndexChanged", ex);
            }

        }

        protected override void Guardar()
        {
            try
            {
                //Se valida antes de grabar
                StringBuilder sb = new StringBuilder();

                string numero = string.Empty;

                #region Valido el Numero Ingresado
                if (this.hidCodigoMuestraEspecial.Value.CompareTo("0") == 0)
                {
                    //SI ES NUEVO VALIDA LA EXISTENCIA DE CODIGO DE MUESTRA GENERADO
                    using (var proxy = new SECodigoMuestraClient("BasicHttpBinding_ISECodigoMuestra"))
                    {
                        numero = proxy.ObtenerCodigoMuestraGenerado((short)enmTipoMuestra.Especial.GetHashCode(), int.Parse(this.txtCodigo.Text.Trim()));
                        if (numero.CompareTo("NOEXISTE") == 0)
                        {
                            sb.AppendLine("Código de muestra ingresado no existe ó ha sido utilizado.");
                            this.MostrarMensajeValidacion(sb.ToString());
                            return;
                        }
                    }
                }
                else
                {
                    numero = this.hidCodigoMuestraEspecial.Value;
                }

                #endregion

                if (!this.Validar(ref sb))
                {
                    this.MostrarMensajeValidacion(sb.ToString());
                    return;
                }

                MuestraEspecial muestraespecial = new MuestraEspecial();
                muestraespecial.CodigoMuestraEspecial = numero;
                muestraespecial.CodigoCategoriaMuestraEspecial = Convert.ToInt16(this.hidCodigoCategoriaMuestraEspecial.Value.ToString());
                muestraespecial.CodigoGeologo = int.Parse(this.ddlGeologo.SelectedValue.ToString());
                muestraespecial.CodigoTipoMaterialMuestra = int.Parse(this.ddlTipoMaterial.SelectedValue.ToString());
                muestraespecial.CodigoTomadorMuestra = int.Parse(this.ddlTomadorMuestra.SelectedValue.ToString());
                muestraespecial.CodigoPlataforma = short.Parse(this.ddlPlataforma.SelectedValue.ToString());
                muestraespecial.Fecha = (DateTime)this.txtFecha.SelectedDate;
                muestraespecial.Anio = this.txtFecha.SelectedDate.Value.Year;
                muestraespecial.Mes = this.txtFecha.SelectedDate.Value.Month.ToString();
                muestraespecial.Dia = this.txtFecha.SelectedDate.Value.Day;
                muestraespecial.Observacion = this.rtxtDescripcion.Text;
                if (this.txtViajes.Text == "")
                {
                    muestraespecial.NumeroViajes = null;
                }
                else
                {
                    muestraespecial.NumeroViajes = int.Parse(txtViajes.Text);
                }
                muestraespecial.CodigoTipoControlCalidad = int.Parse(this.ddlTipoControlCalidad.SelectedValue.ToString());
                if (ddlCancha.SelectedValue.CompareTo("0") == 0)
                {
                    muestraespecial.CodigoTipoCancha = null;
                }
                else
                {
                    muestraespecial.CodigoTipoCancha = int.Parse(this.ddlCancha.SelectedValue.ToString());
                }
                //muestraespecial.CodigoTipoCancha = int.Parse(this.ddlCancha.SelectedValue.ToString() == "0" ? null : this.ddlCancha.SelectedValue.ToString());
                muestraespecial.HoraIni = (this.txtHoraIni.SelectedTime != null) ? (TimeSpan)this.txtHoraIni.SelectedTime : TimeSpan.Parse("00:00:00");
                muestraespecial.HoraFin = (this.txtHoraFin.SelectedTime != null) ? (TimeSpan)this.txtHoraFin.SelectedTime : TimeSpan.Parse("00:00:00");
                muestraespecial.ValorAg = float.Parse("-1");
                muestraespecial.ValorCu = float.Parse("-1");
                muestraespecial.ValorFe = float.Parse("-1");
                muestraespecial.ValorH20 = float.Parse("-1");
                muestraespecial.ValorPb = float.Parse("-1");
                muestraespecial.ValorZn = float.Parse("-1");
                muestraespecial.CodigoMuestraEspecialDuplicado = null;// (this.ddlMuestraDuplicada.SelectedValue.CompareTo("0") == 0) ? null : this.ddlMuestraDuplicada.SelectedValue;
                muestraespecial.Estado = (short)enmEstadoMuestraEspecial.Registrado.GetHashCode();

                //Agrego codigo de Labor
                if (this.hidCodigoLabor.Value.CompareTo("0") != 0 && this.hidCodigoCategoriaMuestraEspecial.Value.CompareTo(enmCategoriaMuestraEspecial.Especial.GetHashCode().ToString()) == 0)
                {
                    muestraespecial.CodigoLabor = int.Parse(this.hidCodigoLabor.Value);
                }

                string result = string.Empty;
                using (SEMuestraEspecialClient proxy = new SEMuestraEspecialClient("BasicHttpBinding_ISEMuestraEspecial"))
                {
                    if (this.hidCodigoMuestraEspecial.Value.CompareTo("0") == 0)

                        result = proxy.InsertarMuestraEspecial(muestraespecial);

                    else
                    {
                        if (this.hidCodigoCategoriaMuestraEspecial.Value.CompareTo(enmCategoriaMuestraEspecial.Especial.GetHashCode().ToString()) == 0)
                            result = proxy.ModificarMuestraEspecial(muestraespecial);
                        else if (this.hidCodigoCategoriaMuestraEspecial.Value.CompareTo(enmCategoriaMuestraEspecial.Cancha.GetHashCode().ToString()) == 0)
                            result = proxy.ModificarMuestraCancha(muestraespecial);
                        else if (this.hidCodigoCategoriaMuestraEspecial.Value.CompareTo(enmCategoriaMuestraEspecial.Planta.GetHashCode().ToString()) == 0)
                            result = proxy.ModificarMuestraPlanta(muestraespecial);
                        else if (this.hidCodigoCategoriaMuestraEspecial.Value.CompareTo(enmCategoriaMuestraEspecial.Humedades.GetHashCode().ToString()) == 0)
                            result = proxy.ModificarMuestraHumanidades(muestraespecial);

                    }
                }

                if (result.CompareTo("Registrado") != 0)
                {
                    MostrarMensajeValidacion(result);
                    return;
                }


                this.MostrarMensaje(MSG_OK_GRABAR);
                this.mpRegistro.Hide();
                Listar();

            }
            catch (Exception ex)
            {
                MostrarMensajeValidacion(MSG_ERROR_GRABAR);
                Logger.Error("frmMuestraEspecial:Guardar", ex);
            }
        }
        protected void ibtnGuardar_Click(object sender, ImageClickEventArgs e)
        {
            Guardar();
        }
        protected void ibtnCancelar_Click(object sender, ImageClickEventArgs e)
        {
            this.mpRegistro.Hide();
        }
        protected void ibtnObtener_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                using (var proxy = new SEMuestraEspecialClient("BasicHttpBinding_ISEMuestraEspecial"))
                {
                    string ultimoCodigo = proxy.ObtenerUltimoCodigoMuestraEspercial(int.Parse(this.hidCodigoCategoriaMuestraEspecial.Value));

                    if (!string.IsNullOrEmpty(ultimoCodigo))
                    {
                        var item = proxy.ObtenerMuestraEspecial(ultimoCodigo);
                        if (item != null)
                        {
                            this.hidCodigoCategoria.Value = item.CodigoCategoriaMuestraEspecial.ToString();
                            this.hidCodigoCategoriaMuestraEspecial.Value = item.CodigoCategoriaMuestraEspecial.ToString();

                            this.ddlGeologo.SelectedValue = item.CodigoGeologo.ToString();
                            this.ddlTipoMaterial.SelectedValue = item.CodigoTipoMaterialMuestra.ToString();
                            this.ddlTomadorMuestra.SelectedValue = item.CodigoTomadorMuestra.ToString();
                            this.ddlPlataforma.SelectedValue = item.CodigoPlataforma.ToString();
                            this.txtFecha.SelectedDate = item.Fecha;
                            this.txtViajes.Text = item.NumeroViajes.ToString();

                            this.ddlCancha.SelectedValue = (item.CodigoTipoCancha != null) ? item.CodigoTipoCancha.ToString() : TipoDropDownList.Seleccionar.GetHashCode().ToString();
                            this.txtHoraIni.SelectedTime = item.HoraIni;
                            this.txtHoraFin.SelectedTime = item.HoraFin;
                            this.rtxtDescripcion.Text = item.Observacion.ToString();
                            this.ddlTipoControlCalidad.SelectedValue = item.CodigoTipoControlCalidad.ToString();

                            //Carga Labor
                            if (item.CodigoLabor != null && this.hidCodigoCategoriaMuestraEspecial.Value.CompareTo(enmCategoriaMuestraEspecial.Especial.GetHashCode().ToString()) == 0)
                            {
                                this.hidCodigoLabor.Value = item.CodigoLabor.ToString();
                                this.hidDato.Value = item.CodigoLabor.ToString();
                                this.lblLabor.Text = item.Labor.NombreLabor + " - " + item.Labor.Cuadrante.ToString();
                                this.searchBoxLabor.Text = item.Labor.NombreLabor;
                            }
                            else
                            {
                                this.hidCodigoLabor.Value = "0";
                                this.lblLabor.Text = string.Empty;
                                this.searchBoxLabor.Text = string.Empty;
                            }

                        }
                    }
                }
            }
            catch (Exception ex)
            {

                Logger.Error("Muestra:ibtnObtener_Click", ex);
            }
        }


        private void CargarDatos(string codigoMuestraEspecial)
        {
            try
            {
                using (var proxy = new SEMuestraEspecialClient("BasicHttpBinding_ISEMuestraEspecial"))
                {
                    var item = proxy.ObtenerMuestraEspecial(codigoMuestraEspecial);
                    if (item != null)
                    {
                        this.hidCodigoMuestraEspecial.Value = item.CodigoMuestraEspecial;
                        this.hidCodigoCategoriaMuestraEspecial.Value = item.CodigoCategoriaMuestraEspecial.ToString();
                        hidCodigoCategoria.Value = item.CodigoCategoriaMuestraEspecial.ToString();

                        //Vuelve a cargar los Canales duplicadas
                        var lista = proxy.ObtenerListItem(int.Parse(this.hidCodigoCategoriaMuestraEspecial.Value)).Where(x => x.Value != this.hidCodigoMuestraEspecial.Value).ToList();
                        this.Bind(this.ddlMuestraDuplicada, lista);
                        this.ddlMuestraDuplicada.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));

                        this.txtCodigo.Text = item.CodigoMuestraEspecial.ToString();
                        this.ddlGeologo.SelectedValue = item.CodigoGeologo.ToString();
                        this.ddlTipoMaterial.SelectedValue = item.CodigoTipoMaterialMuestra.ToString();
                        this.ddlTomadorMuestra.SelectedValue = item.CodigoTomadorMuestra.ToString();
                        this.txtFecha.SelectedDate = item.Fecha;
                        this.txtViajes.Text = item.NumeroViajes.ToString();

                        this.ddlCancha.SelectedValue = (item.CodigoTipoCancha != null) ? item.CodigoTipoCancha.ToString() : TipoDropDownList.Seleccionar.GetHashCode().ToString();
                        this.txtHoraIni.SelectedTime = item.HoraIni;
                        this.txtHoraFin.SelectedTime = item.HoraFin;
                        this.rtxtDescripcion.Text = item.Observacion.ToString();
                        this.ddlTipoControlCalidad.SelectedValue = item.CodigoTipoControlCalidad.ToString();

                        //this.ddlMuestraDuplicada.SelectedValue = (this.ddlMuestraDuplicada.SelectedValue.CompareTo("0") == 0) ? null : this.ddlMuestraDuplicada.SelectedValue; item.CodigoMuestraEspecialDuplicado.ToString();
                        if (item.CodigoMuestraEspecialDuplicado == null || item.CodigoMuestraEspecialDuplicado.Length > 0)
                        {
                            this.ddlMuestraDuplicada.SelectedValue = "0";
                            this.ddlMuestraDuplicada.Visible = false;

                            //HabilitarDuplicados(false);
                        }
                        else
                        {
                            this.ddlMuestraDuplicada.SelectedValue = item.CodigoMuestraEspecialDuplicado;
                            this.ddlMuestraDuplicada.Visible = true;

                            //HabilitarDuplicados(true);
                        }

                        using (SEPlataformaClient proxyPlataforma = new SEPlataformaClient("BasicHttpBinding_ISEPlataforma"))
                        {
                            this.Bind(this.ddlPlataforma, proxyPlataforma.ObtenerListItem1(int.Parse(hidCodigoCategoria.Value)).ToList());
                            this.ddlPlataforma.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));

                        }
                        this.ddlPlataforma.SelectedValue = item.CodigoPlataforma.ToString();

                        //Carga Labor
                        if (item.CodigoLabor != null && this.hidCodigoCategoriaMuestraEspecial.Value.CompareTo(enmCategoriaMuestraEspecial.Especial.GetHashCode().ToString()) == 0)
                        {
                            this.hidCodigoLabor.Value = item.CodigoLabor.ToString();
                            this.hidDato.Value = item.CodigoLabor.ToString();
                            this.lblLabor.Text = item.Labor.NombreLabor + " - " + item.Labor.Cuadrante.ToString();
                            this.searchBoxLabor.Text = item.Labor.NombreLabor;
                        }
                        else
                        {
                            this.hidCodigoLabor.Value = "0";
                            this.lblLabor.Text = string.Empty;
                            this.searchBoxLabor.Text = string.Empty;
                        }
                    }
                }
            }
            catch (Exception ex)
            {

                Logger.Error("Muestra:CargarDatos", ex);
            }
        }

        private void Limpiar(int codigoCategoriaMuestraEspecial)
        {
            #region LimpiarMuestraEspecial
            txtCategoriaMuestraespecial.Text = string.Empty;
            this.ddlGeologo.SelectedValue = TipoDropDownList.Seleccionar.GetHashCode().ToString();
            this.ddlTipoMaterial.SelectedValue = TipoDropDownList.Seleccionar.GetHashCode().ToString();
            this.ddlTomadorMuestra.SelectedValue = TipoDropDownList.Seleccionar.GetHashCode().ToString();
            this.ddlPlataforma.SelectedValue = TipoDropDownList.Seleccionar.GetHashCode().ToString();
            this.txtFecha.SelectedDate = null;
            this.rtxtDescripcion.Text = string.Empty;
            this.ddlTipoControlCalidad.SelectedValue = enmTipoCalidad.Comun.GetHashCode().ToString();
            //this.ddlMuestraDuplicada.Visible = false;
            hidCodigoMuestraEspecial.Value = "0";

            //Agregado por Edgar
            this.lblLabor.Text = string.Empty;
            this.searchBoxLabor.Text = string.Empty;
            this.hidDato.Value = "0";
            this.hidCodigoLabor.Value = "0";
            //Fin por Edgar

            OcultarMensaje();
            OcultarMensajeValidacion();

            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Cancha.GetHashCode())
            {
                this.txtViajes.Text = string.Empty;
                this.ddlCancha.SelectedValue = TipoDropDownList.Seleccionar.GetHashCode().ToString();
            }
            else if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Especial.GetHashCode())
            {
                this.txtViajes.Text = string.Empty;
                //agrgar campo labor
            }
            else if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Planta.GetHashCode())
            {

                this.txtHoraIni.SelectedTime = null;
                this.txtHoraFin.SelectedTime = null;
            }
            else if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Humedades.GetHashCode())
            {
                //no hay campos setear diferentes
            }
            #endregion
        }

        private void Habilitar(bool estado, int codigoCategoriaMuestraEspecial)
        {
            #region HabilitarMuestraEspecial

            this.ibtnGuardar.Visible = estado;

            this.ddlGeologo.Enabled = estado;
            this.ddlTipoMaterial.Enabled = estado;
            this.ddlTomadorMuestra.Enabled = estado;
            this.ddlPlataforma.Enabled = estado;
            this.txtFecha.Enabled = estado;
            this.rtxtDescripcion.Enabled = estado;
            this.ddlTipoControlCalidad.Enabled = estado;
            this.ddlMuestraDuplicada.Enabled = estado;
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Cancha.GetHashCode())
            {

                this.txtViajes.Enabled = estado;
                this.ddlCancha.Enabled = estado;

            }
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Especial.GetHashCode())
            {
                this.txtViajes.Enabled = estado;
                //agregar campo labor
            }
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Planta.GetHashCode())
            {
                this.txtHoraIni.Enabled = estado;
                this.txtHoraFin.Enabled = estado;
            }
            if (codigoCategoriaMuestraEspecial == enmCategoriaMuestraEspecial.Humedades.GetHashCode())
            {
                //no hay campos setear
            }
            #endregion
        }


        protected override bool Validar(ref  StringBuilder sb)
        {
            bool retorno = true;
            try
            {

                //Valido los duplicados
                if (this.ddlTipoControlCalidad.SelectedValue.CompareTo(enmTipoCalidad.Duplicadas.GetHashCode().ToString()) == 0)
                {
                    if (this.ddlMuestraDuplicada.SelectedValue.CompareTo(TipoDropDownList.Seleccionar.GetHashCode().ToString()) == 0)
                    {
                        sb.AppendLine("No ha seleccionado Muestra Duplicada.");
                        retorno = false;
                    }
                }
            }
            catch (Exception ex)
            {
                retorno = false;
                Logger.Error("MuestraEspecial:Validar", ex);
            }
            return retorno;
        }

        protected void ddlTipoControlCalidad_SelectedIndexChanged1(object sender, EventArgs e)
        {
            if (int.Parse(this.ddlTipoControlCalidad.SelectedValue) == enmTipoCalidad.Duplicadas.GetHashCode())
            {
                lblMuestraDuplicado.Visible = true;
                ddlMuestraDuplicada.Visible = true;
                using (var proxy = new SEMuestraEspecialClient("BasicHttpBinding_ISEMuestraEspecial"))
                {

                    var lista = proxy.ObtenerListItem(int.Parse(this.hidCodigoCategoriaMuestraEspecial.Value)).ToList();
                    this.Bind(this.ddlMuestraDuplicada, lista);
                    this.ddlMuestraDuplicada.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.SELECCIONE, TipoDropDownList.Seleccionar.GetHashCode().ToString()));

                }
                //HabilitarDuplicados(false);
            }
            else
            {
                lblMuestraDuplicado.Visible = false;
                ddlMuestraDuplicada.Visible = false;
                this.ddlMuestraDuplicada.SelectedValue = TipoDropDownList.Seleccionar.GetHashCode().ToString();
                //HabilitarDuplicados(true);
            }
        }


    }
}